קורס תכנות כתובות בזיכרון כתובות בזכרון מצביעים וכתובות מצביעים וכתובות שיעור שביעי: מבנים, הקצאת זיכרון דינאמית האופרטור &

Size: px
Start display at page:

Download "קורס תכנות כתובות בזיכרון כתובות בזכרון מצביעים וכתובות מצביעים וכתובות שיעור שביעי: מבנים, הקצאת זיכרון דינאמית האופרטור &"

Transcription

1 כתובות בזיכרון קורס תכנות int x = 10; char c = a ; 'a' שם x כתובת שיעור שביעי: מבנים, הקצאת זיכרון דינאמית c 1 הגדרת מצביע variable( )pointer כתובות בזכרון האופרטור & מחזיר את כתובת המשתנה בזיכרון. type *variable_name; למשתנה מצביע יש שם &x יחזיר שם כתובת x לפני השם תופיע כוכבית * כדי לסמן שזהו מצביע הטיפוס מתאר את המשתנה שמצביעים עליו &c יחזיר c char *str; מצביע ל char int *ptr; מצביע ל int double d, *pd; double ומצביע ל double מצביעים וכתובות מצביעים וכתובות int x = 10; char c = 'a'; int *iptr = &x; char *cptr = &c; שם x c כתובת ערך 10 'a' int x = 10; char c = 'a'; int *iptr = &x; char *cptr = &c; 10 x 'a' c iptr cptr iptr cptr 1

2 סיכום ביניים האופרטור * )dereference( int x = 10; char c = 'a'; int *iptr = &x; char *cptr = &c; *iptr = 30; *cptr = 'A'; ניגש לזיכרון הנמצא בכתובת מסוימת 'a' 'A' x iptr c cptr משתנה מוגדר ע"י טיפוס ושם )k )int משתנה מצביע מוגדר ע"י טיפוס ושם *ptr( )int הכוכבית מסמנת שהמשתנה הוא מצביע והטיפוס מציין את הטיפוס של המשתנה שמצביעים אליו אחרי שהגדרנו משתנה נוכל להשיג את כתובתו בעזרת האופרטור & ניתן לגשת לערך שהמצביע מצביע עליו בעזרת האופרטור * מצביעים ומערכים אריתמטיקה של מצביעים char *cptr = (char*) 2; printf("cptr before: %p\n", cptr); cptr++; printf("and after: %p\n", cptr); output cptr before: and after: קיים קשר הדוק בין מצביעים למערכים שם המערך הוא הכתובת של האיבר הראשון במערך מצביע שלא ניתן לשנות את ערכו int *iptr = (int*) 2; printf("iptr before: %p\n", iptr); cptr++; printf("and after: %p\n", iptr); output iptr before: and after: כיצד זה עובד השמה בין מערך למצביע מצביע מכיל כתובת, שם המערך הוא כתובת ניתן לבצע השמה בין המערך ומצביע int *ptr; int array[10]; הקומפיילר מתרגם גישה לאיבר במערך לגישה לכתובת האיבר המתאים = 100 array[5] הפקודה 100 = 5) + *(array תתורגם ל - ptr = array; לאחר ההשמה ניתן להשתמש ;25 במצביע = כאילו ptr[2] היה שם המערך 4; מצביע= *array ניתן להשתמש במערך כאילו היה array[5] = 100; *(array + 5) = 100; *(ptr + 5) = 100; הפעולות הבאות הן שקולות לולאות 2

3 מערך כפרמטר לפונקציה מצביעים ופונקציות ניתן להעביר כתובת )מצביע( כפרמטר לפונקציה ניתן לקבל כתובת )מצביע( כערך מוחזר כאשר מועבר מערך בפרמטר לפונקציה מועברת הכתובת של תחילת המערך לכן ניתן לשנות את איברי המערך לא ניתן לשנות את הערך של המצביע המועבר לפונקציה כמו כל משתנה אחר ניתן לשנות את המשתנה שמצביעים עליו const מצביע כערך מוחזר אין להחזיר את הכתובת של משתנה לוקאלי העברת מערך שקולה להעברת מצביע הפונקציה strstr חיפוש תו במחרוזת הפונקציה strchr מחפשת תו במחרוזת מוגדרת ב string.h מחזירה מצביע למופע הראשון של התו או NULL char* strchr(const char* str, char c) if (str == NULL) while (*str!= '\0') if (*str == c) return str; str++; אם לא קיים חיפוש תת-מחרוזת char* strstr(const char *haystack, const char *needle) int needlelen; if (*needle == '\0') return (char *) haystack; needlelen = strlen(needle); for (; (haystack = strchr(haystack, *needle))!= NULL; haystack++) if (strncmp(haystack, needle, needlelen) == 0) return (char *) haystack; 6500 str char str[] = Ding Dong ; char *res = strstr(str, Don ); 6500 D i n g D o n g \0 res printf( res=%p\n,res); printf( res=%s\n,res); הפונקציה strstr res=6505 res=dong דוגמא כמה פעמים מופיעה מילה בשיר const char *rhyme = "Humpty Dumpty sat on a wall,\n " "Humpty Dumpty had a great fall.\n " "All the king's horses,\n" "And all the king's men,\n" "Couldn't put Humpty together again.\n"; const char *humpty = "Humpty"; char *ptr = NULL; int count = 0; for (ptr = strstr(rhyme, humpty); ptr!= NULL; ptr = strstr(ptr + 1, humpty)) count++; printf("the string %s appears %d times\n", humpty, count); 3

4 נתונים של ספר הספרייה הנתונים שנרצה לשמור על כל ספר: שם מחבר מספר ISBN שפה מספר עמודים הוצאה תאריך פרסום char title[title_len], author[author_len], isbn[isbn_len], language[lang_len], publisher[publisher_len]; int pages, year, month, day; איפה הספר? פונקציה שמדפיסה פרטים של ספר void print(const char *title, const char *author, const char *isbn, const char *language, const char *publisher, int pages, int year, int month, int day) איפה הספר? מה היינו רוצים? לקבץ הגדרות של משתנים שונים תחת שם יחיד בדומה לפונקציות שמקבצות פעולות תחת שם שימוש בטיפוס החדש כאילו היה טיפוס בסיסי הגדרת משתנים, איתחול, פעולות על הטיפוס וכדומה void print(const book *b) 22 הצהרה )בעזרת דוגמא( מבנים - Structures טיפוס חדש "חבילה" של משתנה אחד או יותר תחת שם יחיד שונה ממערך, יכול להכיל משתנים מטיפוסי שונים טיפוסים בסיסיים, מערכים, מצביעים ואפילו מבנים אחרים שם הטיפוס )רשות( מאפשר לנו להתייחס לטיפוס בהמשך המשתנים )שדות( המרכיבים את הטיפוס החדש המילה השמורה struct struct book char title[title_len], author[author_len], isbn[isbn_len], language[lang_len], publisher[publisher_len]; int pages; Date publication_date; ; מהו?Date

5 הצהרה - כללי שם הטיפוס )רשות( מאפשר לנו להתייחס לטיפוס בהמשך המשתנים )שדות( המרכיבים את הטיפוס החדש המילה השמורה struct struct <Tag> <field-type> <field-name>; <field-type> <field-name>; <field-type> <field-name>; ; הצהרה תופיע בתחילת הקובץ לאחר הגדרות ה define מגדירה את התבנית הכללית של הטיפוס שימו לב, זו הצהרה על טיפוס ולא על משתנה! עבודה עם מבנים נקודה במישור זוג סדור,(, xy (,של מספרים המייצגים את מיקום הנקודה במישור נרצה למפות את הטיפוס המורכב לטיפוסים פשוטים יותר struct point double x, y; ; מכיל שני שדות x,y מהטיפוס הבסיסי double המייצגים קואורדינאטות במישור המבנה הוא טיפוס כמו char* int, double, נגדיר משתנים מהטיפוס החדש שם המשתנה שם הטיפוס struct point p; int i; double d; ; קצר יותר כתיבה מקוצרת - typedef ניתן לתת שם נרדף לטיפוסים לדוגמא: קרא לטיפוס char* גם בשם string ניתן להשתמש בשם הנרדף בכל מקום שבו השתמשנו בשם המקורי string strlen(const string str) באופן כללי: גם למבנים typedef char* string; typedef <name> <alias> typedef struct book Book; typedef struct point Point; 29 ניתן לחבר את הגדרת המבנה עם השם הנרדף וכאשר נשתמש לא חייבים את השם typedef struct double x, y; point; double distance(point p, point q) point p1, p2; 30 5

6 משתנים מטיפוס מורכב משתנים ככל המשתנים האחרים )כמעט( הגדרה איתחול השמה מצביעים קריאה לפונקציות / ערך מוחזר אם משתמשים ב typedef point p, q; point p = 1, 0.2; q = p; point *p_ptr; double distance(point p, point q) איתחול מבנים ניתן לאתחל משתנה בשורת ההגדרה על ידי: point p1 = 1.5, 2; האיתחול מתבצע לפי סדר השדות בהגדרה איתחול חלקי יגרום לשאר השדות להיות מאותחלים ל איתחול מבנים )המשך( book b = "Alice in Wonderland", // title "Lewis Carroll", // author " X", // isbn "English", // language "Tribeca Books", // publisher 100, // pages 2010, 12, 12 // date ; פעולות על מבנים הפעולות היחידות המוגדרות על מבנה הן: גישה לשדה האופרטור. )dot( כתובת המשתנה אופרטור & )כמו עבור כל משתנה אחר( מחזיר את הכתובת של השדה הראשון במבנה השמה אופרטור = ההשמה מתבצעת ע"י העתקה שדה-שדה ממשתנה אחד לשני לא מוגדרות: השוואה, פעולות אריתמטיות ולוגיות נדרש להגדיר פונקציות שימו לב לאיתחול של השדה publication_date שהוא בעצמו מהטיפוס המורכב Date גישה לשדות של מבנה מתבצעת בעזרת האופרטור. )dot( מופעל על משתנה ולא על הטיפוס גישה לשדה x במשתנה p מטיפוס point באופן כללי p.x <variable-name>.<field-name> 35 גישה לשדות של מבנה point p1, p2; מתבצעת בעזרת האופרטור. )dot( מופעל על משתנה ולא על הטיפוס שני משתנים מטיפוס point קלט של ערכי השדות x ו- y עבור המשתנה p1 חישוב ערכי השדות x ו- y של המשתנה p2 בעזרת ערכי השדות המשתנה p1 של ו- y x פלט של ערכי השדות x ו- y של המשתנה p2 scanf("%lf%lf", &p1.x, &p1.y) p2.x = 2 * p1.y; p2.y = 4 * p1.x; printf("p2 = <%g, %g>\n", p2.x, p2.y); 36 6

7 השמה כתובת של מבנה בדומה לטיפוסים אחרים נשתמש באופרטור & כדי לקבל את הכתובת של המשתנה ניתן לבצע השמה בין שני משתנים מאותו טיפוס מורכב point p1, p2; p1 = p2; העתקה של הערך במשתנה p1 למשתנה p2 point p; point *p_ptr = &p; השמה מבוצעת עבור כל השדות שקול ל: הכתובת של p מצביע ל- point בשם p_ptr point p1, p2; p1.x = p2.x; p1.y = p2.y; השוואה פעולות אחרות לא מוגדרות פעולות אחרות על מבנים תלויות בטיפוס הספציפי מה המשמעות של שוויון בין נקודות? ספרים? האופרטור == לא מוגדר עבור מבנים נממש שוויון עבור נקודות בעזרת פונקציה נקודות שוות עם ערכי ה- x וה- y שלהם שווים int equals(point p1, point p2) return p1.x == p2.x && p1.y == p2.y; נצטרך לממש אותן בעצמנו בעזרת פונקציות האופרטור == מוגדר על הטיפוס הבסיסי double כיצד נחשב מרחק בין שתי נקודות? כיצד נחשב מרחק בין שתי נקודות? מרחק בין שתי נקודות p 1 ו- p 2 מוגדר על ידי p x, y p x, y dist ( x x ) ( y y ) הפונקציה distance double distance(point p1, point p2) return sqrt( (p1.x p2.x) * (p1.x p2.x) + (p1.y p2.y) * (p1.y p2.y) ); point p, q; printf("enter x and y coord. of the first point\n"); scanf("%lf%lf", &p.x, &p.y); printf("enter x and y coord. of the second point\n"); scanf("%lf%lf", &q.x, &q.y); printf("the distance is %g\n", distance(p, q));

8 מבנים ופונקציות בדיוק כמו משתנים רגילים call by value העתקת הערך של המשתנה למשתנה המקומי בפונקציה בשביל זה צריך השמה שינוי המשתנה בתוך הפונקציה לא משפיע על המשתנה בפונקציה הקוראת ניתן גם להחזיר משתנה point *p_ptr; מצביעים למבנים נוכל להגדיר מצביע למבנה בעזרת * כפי שראינו האופרטור & פועל גם על מבנים היכן נשתמש בכל מקום שבו נרצה שהפונקציה תשנה את המבנה המקורי העברת מבנה גדול כפרמטר לפונקציה. העברת הכתובת )גודל קבוע( חוסכת שיכפול המבנה כולו דוגמא double distance(const point* p, const point* q) הפונקציה מקבלת מצביעים לשני משתנים מטיפוס point point p, q; printf("enter x and y coord. of the first point\n"); scanf("%lf%lf", &p.x, &p.y); printf("enter x and y coord. of the second point\n"); scanf("%lf%lf", &q.x, &q.y); printf("the distance is %g\n", distance(&p, &q)); מבנים ומצביעים גישה לשדות נעביר לפונקציה את הכתובות של המשתנים p ו- q נשתמש באופרטור * ל. קדימות על * ולכן צריך סוגריים שימוש ב * על מצביע למבנה יחזיר את המבנה, כדי לגשת לשדה נשתמש כעת באופרטור dot (*<struct-pointer>).<field-name> מבנה double distance(const point* p1, const point* p2) return sqrt( ((*p1).x - (*p2).x) * ((*p1).x - (*p2).x) + ((*p1).y - (*p2).y) * ((*p1).y - (*p2).y) ); מערכים של מבנים אופרטור החץ >- )סוכר תחבירי( במקום להשתמש בצירוף שדה.)מצביע*( כדי לגשת לשדה נוכל להשתמש באופרטור >- שינוי בתחביר בלבד זהו התחביר המועדף int distance(const point* p1, const point* p2) return sqrt( (p1->x p2->x) * (p1->x p2->x) + (p1->y p2->y) * (p1->y p2->y) ); point points[10]; כמו מערכים של טיפוסים בסיסיים הגדרת מערך פונקציה המאתחלת את המערך void init_points(point points[], int size) int i; for (i = 0; i < size; i++) points[i].x = i; points[i].y = i;

9 מבנה כשדה של מבנה אחר - איתחול מלבן כיצד נגדיר מלבן שצלעותיו מקבילות לצירים? בשורת ההגדרה bottom left top right rectangle rec = 5, 6, 7, 8 ; נשתמש במבנה הנקודה שכבר הגדרנו bottom_left top_right typedef struct point bottom_left, top_right; rectangle; המבנה rectangle מכיל שני שדות מטיפוס point מערך כשדה של מבנה typedef struct double coordinates[2]; point; מבנים יכולים להכיל מערך כשדה מימוש חלופי של המבנה point 51 דוגמא העברת מבנה המכיל מערך לפונקציה תגרום להעתקת כל אברי המערך שינוי המערך בתוך הפונקציה לא יגרום לשינוי המשתנה המקורי 52 הפלט יהיה [0,0] void init_point(point p) p.coordinates[0] = 1; p.coordinates[1] = 1; point p = 0,0 ; init_point(p); printf("[%g,%g]", p.coordinates[0], p.coordinates[1]); דוגמא )המשך( הפונקציה לא תשפיע על המשתנה המועבר אליה הפונקציה פועלת על העתק של המשתנה הכולל העתק של המערך כיצד נשנה את המערך המקורי? נעביר מצביע ל- point void init_point(point p) p.coordinates[0] = 1; p.coordinates[1] = 1; 53 תרגיל נממש פונקציה אשר בהינתן רשימה של מלבנים מוצאת את המלבן בעל האלכסון הגדול ביותר משתנים: 54 רשימה מערך של מלבנים )וגודלו( ערך מוחזר: כתובת המלבן המבוקש 9

10 מימוש מערך של מלבנים בזיכרון max_rect המלבנים נשמרים ברצף rect_t rect_t rect_t rect_t rect_t rect_t rect_t כל נקודה מכילה שני כל מלבן מכיל שתי נקודות point_t p double double x point_t q double y 55 rectangle* max_rect(const rectangle rectangles[], int size) double max_diagonal = 0, length; rectangle_t *result = NULL; int i; עבור כל מלבן נחשב את אורך האלכסון נזכור את האלכסון המקסימאלי שראינו עד עכשיו ואת המלבן שזהו האלכסון שלו for (i = 0; i < size; i++) length = diagonal(&rectangles[i]); if (length > max_diagonal) max_diagonal = length; result = &rectangles[i]; return result; 56 מבנים - סיכום חישוב אורך האלכסון אורך האלכסון שווה למרחק בין הנקודות המגדירות את המלבן הגדרת טיפוסי משתנים חדשים שקרובים לעולם- הבעיה double diagonal(const rectangle* rec) return distance(&rec->bottom_left, &rec->top_right); שימוש כמו בטיפוסים רגילים מערך של מבנים, מצביעים על מבנה, העברה לפונקציה וכו' מוגדרת פעולת ההשמה יש להגדיר פונקציות עבור פעולות אחרות )השוואה, אריתמטיות ועוד( נשתמש בפונקציה distance שראינו קודם הקצאת זיכרון דינאמית הקצאת זיכרון דינאמית עד עכשיו עשינו "הקצאה סטטית" הגדרנו את משתני התוכנית כבר כשכתבנו אותה הקומפיילר הקצה עבורם מקום בזיכרון בפרט, בהגדרת מערך קבענו את גודלו ולא יכולנו לשנות אותו בזמן הריצה int a[10]; ; למשל: הנחנו חסם עליון על כמות המשתנים הנדרשת

11 הקצאת זיכרון דינאמית טעות נפוצה ניסיון להגדיר מערך בגודל משתנה printf("enter number of elements\n"); scanf("%d", &size); int a[size]; ; לא תמיד כל המידע ידוע בזמן כתיבת התכנית לדוגמא, תלוי בקלט מהמשתמש ניתן להקצות זיכרון במהלך ריצת התכנית הזיכרון יוקצה באזור ה"ערימה" )heap( לא נעלם כאשר הפונקציה מסתיימת הקצאה ושחרור באחריות המתכנת הקומפיילר צריך לדעת כמה זיכרון להקצות לכל משתנה הקצאה דינאמית בשפת C מודל הזיכרון של התכנית קוד קריאה בלבד קריאה וכתיבה data מחסנית )stack( ערימה )heap( הקוד פקודות התכנית Data מחרוזות שהוגדרו ע"י המתכנת מחסנית )Stack( משמש לאיחסון משתנים לוקאליים Last In First Out (LIFO) בשליטת התכנית ערימה )Heap( בשליטת המתכנתת )היום!( 63 C מספקת לנו מנגנון בסיסי להקצאה ושחרור של זיכרון פונקציה malloc calloc free realloc מטרה מוגדרות ב stdlib.h הקצאת זיכרון בגודל מבוקש הקצאת מערך של אברים ואיתחולו ל- 0 שחרור זיכרון שהוקצה קודם לכן שינוי גודלו של זיכרון שהוקצה קודם לכן 64 הפונקציה malloc malloc דוגמא void *malloc(int nbytes) מקבלת את גודל הזיכרון שנרצה להקצות )בבתים( מחזירה את הכתובת לזיכרון שהוקצה NULL אם נכשלה תמיד יש לבדוק אם הקצאת הזיכרון הצליחה או נכשלה 65 הקצאה דינאמית של זיכרון בגודל int 10 int *a = (int*) malloc(10 * sizeof(int)); האופרטור sizeof מחזיר את הגודל )בבתים( של הטיפוס המבוקש הפונקציה מחזירה כתובת )void*( באחריותנו להמיר את המצביע לטיפוס המתאים 66 11

12 שימוש ב malloc type *var-name = (type*) malloc(amount * sizeof(type)); גודל הטיפוס בבתים המרת הערך המוחזר לטיפוס המתאים מצביע לתחילת הזיכרון המוקצה הערך המוחזר הוא כתובת כלשהי ללא ציון הטיפוס כדי להשתמש במצביע יש לבצע המרה )casting( הפונקציה free שיחרור זיכרון באחריות המתכנת לשחרר זיכרון שהוקצה דינאמית -ptr מצביע לזיכרון שהוקצה דינאמית או realloc אחרת void free(void *ptr) malloc, ערך מוחזר מקריאה ל- calloc -ptr שגיאה אין שיחרור חלקי של זיכרון הקצאת מערך בגודל משתנה הקצאת מערך בגודל משתנה int *a, size, i; printf("enter array size\n"); scanf("%d", &size); קרא גודל מערך מהמשתמש הקצאת זיכרון בגודל המבוקש a = (int*) malloc(size * sizeof(int)); if (a == NULL) return 1; בדיקה האם ההקצאה הצליחה int *a, size, i; printf("enter array size\n"); scanf("%d", &size); a = (int*) malloc(size * sizeof(int)); if (a == NULL) return 1; main a size i Stack for (i = 0; i < size; i++) scanf("%d", &a[i]); קלט מהמשתמש for (i = 0; i < size; i++) scanf("%d", &a[i]); for (i = 0; i < size; i++) printf("%d", a[i]); הדפסת תוכן המערך for (i = 0; i < size; i++) printf("%d", a[i]); Heap free(a); שיחרור הזיכרון free(a); פונקציות נוספות - calloc דוגמא void* calloc( unsigned int n, unsigned int size_el ) מקצה מערך של n איברים, כל איבר בגודל size_el בתים, כל בית מאותחל לאפס )ולכן פחות יעילה(. void* realloc( void *ptr, unsigned int size ) מקבלת מצביע לזיכרון שהוקצה דינאמית ומספר בתים size הפונקציה מקצה זיכרון בהתאם לגודל הנדרש מעתיקה את תכולת הזיכרון הישן לחדש משחררת את הזיכרון הישן בשתי הפונקציות קריאה מוצלחת תחזיר את כתובת תחילת הזיכרון המוקצה, אחרת יוחזר NULL 71 int *a, size, i; printf("enter array size\n"); scanf("%d", &size); a = (int*) calloc(size, sizeof(int)); if (a == NULL) return 1; for (i = 0; i < size; i++) scanf("%d", &a[i]); for (i = 0; i < size; i++) printf("%d", a[i]); free(a); הקצאת size אלמנטים, כל אלמנט בגודל sizeof(int) הפונקציה תאתחל את הזיכרון ל

13 - realloc דוגמא זיכרון שהוקצה דינאמית int *ptr = NULL; int size = 0, new_size = 0; scanf("%d", &size); הקצאת זיכרון ); sizeof(int) ptr = (int*) malloc( size * /* incomplete, must check if allocation succeeded */ scanf("%d", &new_size); ptr = (int*) realloc( ptr, new_size*sizeof(int) ); /* incomplete, must check if allocation succeeded */ if (ptr!= NULL) free(ptr); הקצאת חדשה שחרור זיכרון 73 int* func() int *memptr = NULL; memptr = (int*) malloc(10 * sizeof(int)); return memptr; int * ptr = func(); מותר להחזיר כתובת לזיכרון שהוקצה דינאמית if (ptr!= NULL) // do something with ptr free(ptr); ptr = NULL; memptr ptr הזיכרון שייך לתוכנית ולא לפונקציה 74 שיחרור זיכרון אפשרות א': הפונקציה שהקצתה האפשרות המועדפת הדינאמי כותב הפונקציה אחראי על הזיכרון אפשרות ב': החזרת הכתובת האחריות עוברת למי שקרא לפונקציה המקצה חובה לתעד זאת, אחרת "דליפת זיכרון" עלינו להימנע ממצב שבו יש הקצאת זיכרון אבל לא מתקיים א' או ב' 75 capacity = capacity * INCREMENT * sizeof(char); 76 מערך בגודל התחלתי כלשהו 77 יש לוודא שהקצאת הזיכרון לא נכשלה 78 13

14 קריאת קלט מהמשתמש עד לסוף השורה 79 האם נגמר המקום? 80 נקצה מערך גדול יותר 81 לא לשכוח לבדוק 82 לא לשכוח לעדכן את capacity 83 נשמור את התו שקראנו במקום המתאים 84 14

15 בסוף נוסיף 0\ 85 מחזירים זיכרון שהוקצה דינאמית באחריות הלקוח לשחרר )צריך לתעד( 86 שימוש ב readline שימוש ב readline char *line = readline(); if (line == NULL) printf("fatal error: memory allocation failed!\n"); return 1; printf("%s\n", line); free(line); קריאת שורת קלט מהמשתמש char *line = readline(); if (line == NULL) printf("fatal error: memory allocation failed!\n"); return 1; printf("%s\n", line); free(line); אם הייתה בעיה נדפיס הודעת שגיאה ונסיים שימוש ב readline שימוש ב readline char *line = readline(); if (line == NULL) printf("fatal error: memory allocation failed!\n"); return 1; שימו לב לערך המוחזר printf("%s\n", line); free(line); char *line = readline(); if (line == NULL) printf("fatal error: memory allocation failed!\n"); return 1; printf("%s\n", line); free(line); נשתמש בקלט

16 char *line = readline(); שימוש ב readline if (line == NULL) printf("fatal error: memory allocation failed!\n"); return 1; printf("%s\n", line); כשאיננו צריכים יותר את הקלט, נשחרר free(line); את הזיכרון הקצאת זיכרון - בעיות נדיר שהקצאת הזיכרון נכשלת אפשרויות לטיפול: החזרת הערך NULL מהפונקציה - כאשר תפקיד הפונקציה הוא הקצאת הזיכרון שימוש בפונקציה exit לסיום התכנית 91 הקצאה דינאמית של מערכים דו-ממדיים הקצאה דינאמית של מבנים typedef struct char *title, *author; Book; בדיוק כמו בטיפוסים בסיסיים שתי גישות אפשריות: 1. מערך של מערכים Book* newbook(const char *title, const char *author) Book *result = (Book*) malloc(sizeof(book)); /* incomplete, must check if allocation succeeded */ result->title = (char*) malloc(strlen(title) + 1); /* incomplete, must check if allocation succeeded */ strcpy(result->title, title); result->author = (char*) malloc(strlen(author) + 1); /* incomplete, must check if allocation succeeded */ strcpy(result->author, author); 2. מצביעים לתוך מערך "גדול" return result; איתחול והדפסה מערך של מערכים int rows, cols, i; int** table; void init_table(int **table, int rows, int cols) int i, j; scanf("%d%d", &rows, &cols); table = (int**) malloc(rows * sizeof(int*)); /* incomplete, must check if failed */ for (i = 0; i < rows; i++) table[i] = (int*) malloc(cols * sizeof(int)); /* incomplete, must check if failed */ init_table(table, rows, cols); print_table(table, rows, cols); for (i = 0; i < rows; i++) free(table[i]); free(table); return EXIT_SUCCESS; for (i = 0; i < rows; i++) for (j = 0; j < cols; j++) table[i][j] = (i + 1) * (j + 1); void print_table(int **table, int rows, int cols) int i, j; for (i = 0; i < rows; i++) for (j = 0; j < cols; j++) printf("%4d", table[i][j]); printf("\n");

17 הפונקציה exit מצביעים לתוך מערך גדול int rows, cols, i; int* data; int** table; scanf("%d%d", &rows, &cols); data = (int*) malloc(rows * cols * sizeof(int)); /* incomplete, must check if failed */ table = (int**) malloc(rows * sizeof(int*)); /* incomplete, must check if failed */ for (i = 0; i < rows; i++) table[i] = data + (cols * i); init_table(table, rows, cols); print_table(table, rows, cols); free(table); free(data); void exit(int status); מוגדרת ב stdlib.h מסיימת את התכנית באופן מיידי נשתמש רק כאשר מתרחשת בעיה שאין לנו שום דרך לטפל בה בדרך כלל נדפיס הודעת שגיאה למשתמש ונסיים את תכנית return EXIT_SUCCESS; 97 דוגמה לשימוש ב- exit נשנה את גודלו של מערך של int בעזרת realloc אם השינוי נכשל, נסיים את התכנית int* resize(int *array, int newsize) if (array == NULL) return array; array = (int*) realloc(array, newsize * sizeof(int)); if (array == NULL) printf("fatal error: memory allocation failed!\n"); exit(1); return array; 99 17

קורס תכנות שיעור שישי: מחרוזות, מצביעים

קורס תכנות שיעור שישי: מחרוזות, מצביעים קורס תכנות שיעור שישי: מחרוזות, מצביעים מערכים אוסף סדור של משתנים מאותו סוג המשתנים נמצאים ברצף בזיכרון העברת מערך לפונקציה Define רקורסיה במערך מערכים דו מימדיים 2 מחרוזות מהי מחרוזת? רצף של תוים ייצוג

More information

מבוא לתכנות בשפת C. Tzachi (Isaac) Rosen

מבוא לתכנות בשפת C. Tzachi (Isaac) Rosen מבוא לתכנות בשפת C מצביעים והקצאה דינאמית כתובות של משתנים לכל משתנה כתובת של המקום שלו בזיכרון כבר ראינו: שם של מערך הוא למעשה הכתובת של התא הראשון )באינדקס 0( של המערך להזכירכם: תא של מערך הינו משתנה

More information

Introduction to Programming in C תרגול 8

Introduction to Programming in C תרגול 8 Introduction to Programming in C תרגול 8 1 1 נושאים מצביעים רקע אופרטורים על מצביעים מצביעים כפרמטרים לפונקציה הקצאה דינמית מבנים תאור הזיכרון של המחשב: מצביעים ניתן לחשוב על זיכרון המחשב כעל רצף של תאים,

More information

Computer Programming A תרגול 9

Computer Programming A תרגול 9 Computer Programming A תרגול 9 1 מטרת התרגול הקצאת זיכרון מבנים רשימות דינאמית ניהול הזיכרון בתוכנית עד כה כל המשתנים שראינו היו לוקאליים. משך הקיום של משתנים מקומיים הוא הזמן אשר הפונקציה בה הם נמצאים

More information

Programming in C תרגול 8

Programming in C תרגול 8 Programming in C תרגול 8 1 1 נושאים מצביעים רקע אופרטורים על מצביעים מצביעים כפרמטרים לפונקציה הקצאת זיכרון דינאמית Malloc free מצביעים תאור הזיכרון של המחשב: ניתן לחשוב על זיכרון המחשב כעל רצף של תאים,

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 234127 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 2013 Based on slides of Dr. Eran Eden, Weizmann 2008 1 >>g = [89 91 80 98]; >>p

More information

פרק 15 טיפוס חדש: מבנים שימוש במבנים שימוש במבנים שימוש במבנים

פרק 15 טיפוס חדש: מבנים שימוש במבנים שימוש במבנים שימוש במבנים פרק 15 ב- C מבנים טיפוס חדש: מבנים 1 מבנה (structure) הוא טיפוס מורכב בשפת C (בניגוד לטיפוס בסיסי). זהו טיפוס שמיועד לאיחוד קבוצת משתנים תחת שם אחד. משתנים אלו נקראים השדות של המבנה, והם יכולים להיות מטיפוסים

More information

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

מערכים שעור מס. 4 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 מערכים שעור מס. 4 דרור טובי דר' כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 למה מערכים? ברצוננו לאחסן בתוכנית ציוני בחינה כדי לחשב את ממוצע הציונים וסטיית התקן. נניח ש 30 סטודנטים לקחו

More information

ת ונכת סרוק תורשוקמ תומישר :יעישת רועיש 1

ת ונכת סרוק תורשוקמ תומישר :יעישת רועיש 1 קורס תכנות שיעור תשיעי: רשימות מקושרות 1 הקצאה דינאמית של מערכים דו-ממדיים )לפחות( שלוש גישות אפשריות:.1 מערך של מערכים מצביעים לתוך מערך "גדול".2 3. מצביע יחיד למערך גדול 2 The Interface 3 (Simple) Usage

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 23427 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 203 Based on slides of Dr. Eran Eden, Weizmann 2008 ביטויים לוגיים דוגמא: תקינות

More information

קורס תכנות בשיעור הקודם למדנו על רקורסיה שיעור שישי: מערכים פונקציה רקורסיבית שאלה חישוב נוסחאות רקורסיביות בשפת C

קורס תכנות בשיעור הקודם למדנו על רקורסיה שיעור שישי: מערכים פונקציה רקורסיבית שאלה חישוב נוסחאות רקורסיביות בשפת C בשיעור הקודם למדנו על רקורסיה פתרנו את בעיית מגדלי הנוי בעזרת רקורסיה כלומר בעזרת פונקציה שקוראת לעצמה. רקורסיה מאפשרת לנו לפתור בעיה "גדולה" בעזרת פתרון של בעיות "קטנות" המרכיבות אותה. קורס תכנות שיעור

More information

מבוא לתכנות ב- JAVA מעבדה 2

מבוא לתכנות ב- JAVA מעבדה 2 מבוא לתכנות ב- JAVA מעבדה 2 מה בתרגול טיפוסים פרימיטיביים המרות טיפוסים אופרטורים יחסיים ולוגיים משפט if-else בתרגול הקודם טיפוסים פרימיטביים לייצוג מספרים שלמים וממשיים ואופרטורים לפעולות בין מספרים.1

More information

קורס תכנות שיעור שני: שימוש במשתנים,

קורס תכנות שיעור שני: שימוש במשתנים, קורס תכנות שיעור שני: שימוש במשתנים, בקרת זרימה, לולאות 1 נושאי השיעור היום משתנים )variables( טיפוסי משתנים בשפת C הגדרת משתנים השמה למשתנים פעולות על משתנים קליטת ערכים מהמשתמש הדפסה משתנים בקרת זרימה

More information

תרגול מספר 3: מערכים

תרגול מספר 3: מערכים היום בתרגול:.1.2 תרגול מספר 3: מערכים מערך חד-מימדי: מה זה מערך ולמה צריך אותו? איך מגדירים? איך זה נראה בזכרון? דוגמאות לשימוש במערך חד-מימדי השוואה בין משתנה פרימיטיבי למשתנה שאינו פרימיטיבי מערך דו-מימדי:

More information

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions

לתיכנות עם MATLAB Lecture 5: Boolean logic and Boolean expressions מבוא לתיכנות עם MATLAB 234127 Lecture 5: Boolean logic and Boolean expressions Written by Prof. Reuven Bar-Yehuda, Technion 2013 Based on slides of Dr. Eran Eden, Weizmann 2008 1 motivation Proper academic

More information

Algorithms. Intro2CS week 5

Algorithms. Intro2CS week 5 Algorithms Intro2CS week 5 1 Computational problems A computational problem specifies an inputoutput relationship What does the input look like? What should the output be for each input? Example: Input:

More information

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1

משתנים שעור מס. 2 כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 משתנים שעור מס. 2 דרור טובי דר' כל הזכויות שמורות דר ' דרור טובי המרכז האוניברסיטאי אריאל 1 תפקיד המשתנים הצהרה על משתנה השמת ערך במשתנה int a, b, c; a = 1234; b = 99; c = a + b; משתנים מאפשרים לנו לשמור

More information

מבוא למדעי המחשב תרגול 13: עצים בינאריים

מבוא למדעי המחשב תרגול 13: עצים בינאריים מבוא למדעי המחשב תרגול 13: עצים בינאריים עצים בינאריים - הגדרה הגדרה: עץ בינארי הוא עץ ריק (בלי צמתים) או עץ המורכב משורש ושני תתי-עצים, הוא עץ בינארי. ימני ושמאלי, שכל אחד מהם תרגיל 1 עץ בינארי מסודר

More information

תרגול 6 רקורסיה ותכנות מונחה עצמים

תרגול 6 רקורסיה ותכנות מונחה עצמים מבוא למדעי המחשב 2017 תרגול 6 רקורסיה ותכנות מונחה עצמים מבוא למדעי המחשב 1 ראינו בהרצאה רקורסיה תכנות מונחה עצמים: מחלקה ואובייקט שדות, בנאים ושיטות מימוש מערך דינאמי של ראשוניים בתרגול היום רקורסיה הדפסת

More information

מבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2

מבוא למדעי המחשב תירגול 2: מבוא למדעי המחשב מ' - תירגול 2 מבוא למדעי המחשב תירגול 2: לולאות, קלט, וטיפוסים 1 תוכנייה לולאת while קלט טיפוסי משתנים המרת טיפוסים טיפוס char 2 לולאת while 3 לולאת while קטע קוד מתבצע שוב ושוב כל עוד תנאי מתקיים int number = 40; while(number>0)

More information

Practical Session - Heap

Practical Session - Heap Practical Session - Heap Heap Heap Maximum-Heap Minimum-Heap Heap-Array A binary heap can be considered as a complete binary tree, (the last level is full from the left to a certain point). For each node

More information

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes תוכנה 1 תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes class Outer { static class NestedButNotInner {... class Inner {... מחלקות מקוננות NESTED CLASSES 2 מחלקה מקוננת Class) )Nested

More information

Engineering Programming A

Engineering Programming A Engineering Programming A תרגול 5 25.11.2012 מערכים חד-מימדיים )תזכורת( לדוגמא: מערך בשם Arr בגודל 8 שאיבריו מטיפוס int 3 7 5 6 8 1 23 16 0 1 2 3 4 5 6 7 ב - arr[0] ב יושב ערך שהוא המספר השלם 3 arr[1]

More information

תכנות מתקדם בשפת C משתנים

תכנות מתקדם בשפת C משתנים תכנות מתקדם בשפת C משתנים 1 משתנים סוגי משתנים בשפת C ההבדלים בין סוגי המשתנים השונים 2 /* This program computes m to the power of n */ /* Assumptions: m is an integer; n is a positive integer */ #include

More information

תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 בשפת Java נושאים שונים בהורשה רובי בוים ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב Today Static vs. Dynamic binding Equals / hashcode String Immutability (maybe) 2 Static versus run-time

More information

Tutorial 10. Introduction to C++ שימו

Tutorial 10. Introduction to C++ שימו Introduction to ++ שימו תרגול זה אינו התרגול הרישמי של הקורס. הוא מבוסס על חוברת התרגולים אך מכיל שינויים, הסברים נוספים ודוגמאות שונות או נוספות. + + תוכנ ית רא שונה ב הכרו ת עם + + תרגול // First ++

More information

מבוא למדעי המחשב תירגול 3:

מבוא למדעי המחשב תירגול 3: מבוא למדעי המחשב תירגול 3: לולאות, קלט, וטיפוסים תוכנייה לולאת while קלט טיפוסי משתנים המרת טיפוסים טיפוס char מבוא למדעי המחשב מ' - תירגול 3 2 לולאת while מבוא למדעי המחשב מ' - תירגול 3 3 לולאת while

More information

מבוא לתכנות ב- JAVA תרגול 6

מבוא לתכנות ב- JAVA תרגול 6 מבוא לתכנות ב- JAVA תרגול 6 מה בתרגול )methods( פונקציות/שיטות ב- Java הגדרת פונקציה קריאה/הפעלה העברת ארגומנטים ערכי החזרה מבוא לפונקציות- שימוש חוזר בקוד נניח שבמהלך תוכנית נדרשתם לחשב את הסכום של המספרים

More information

תרגול 3 מערכים ופונקציות

תרגול 3 מערכים ופונקציות מבוא למדעי המחשב 2017 תרגול 3 מערכים ופונקציות מערכים מאפשרים עבודה עם מקבצים של נתונים פונקציות מאפשרות אבסטרקציה והאחדה של הקוד ראינו בהרצאה מערכים הצהרה, אתחול, גישה לאיברים במערך יצוג בזיכרון ובטבלת

More information

רזח יליגרתו םי יראני ב ם

רזח יליגרתו םי יראני ב ם מבוא למדעי המחשב עצים בינאריים ותרגילי חזרה תרגול 13: עצים בינאריים - הגדרה הגדרה: עץ בינארי הוא עץ ריק )בלי צמתים( או עץ המורכב משורש ושני תתי-עצים, הוא עץ בינארי. ימני ושמאלי, שכל אחד מהם שאלה עץ בינארי

More information

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת

הנכות 1 תואיגש םע תודדומתהו תואלול,םי : כרעמ 2 לוגרת תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות מערכים מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices

More information

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num)

סכום (סדרת ערכים) אחרת - דוגמא: סכום-ספרות (num) אם < 10 num החזר 1 או אם = 0 = num החזר 0 public static int numofdigits (int num) 1 תבנית צבירה תבניות אלגוריתמיות לפעולות רקורסיביות תבנית צבירה לסדרת ערכים: סכום (סדרת ערכים) החזר את ערך הקצה + סכום (סדרת הערכים ללא ערך הקצה) דוגמא: פעולה המחזירה את סכום הספרות שבמספר שלם לא שלילי

More information

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת

הנכות 1 תואיגש םע תודדומתהו תואלול,םיכרעמ : לו 2 גרת תוכנה 1 תרגול 2: מערכים, לולאות והתמודדות עם שגיאות מערכים Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start

More information

תכנות מונחה עצמים משחקים תשע"ו

תכנות מונחה עצמים משחקים תשעו move semantics 1 תכנות מונחה עצמים ופיתוח משחקים תשע"ו סמנטיקת ההעברה semantics( )Move move semantics 2 מטרה האצה של התוכניות, שיפור בביצועים על ידי חסכון בבנייה והעתקה של אובייקטים זמניים move semantics

More information

תוכנה 1 תרגול 2: מערכים ומבני בקרה

תוכנה 1 תרגול 2: מערכים ומבני בקרה תוכנה 1 תרגול 2: מערכים ומבני בקרה 2 Useful Eclipse Shortcuts Ctrl+1 quick fix for errors, or small refactoring suggestions Ctrl+SPACE code content assist (auto-completion) Auto completion for main create

More information

ASP.Net Web API.

ASP.Net Web API. ASP.Net Web API 1 מה זה? Web API View בלבד ולא Data אותו מממש השרת והוא מחזיר לקליינט API הוא Web API הבקשה והתשובה הן בפרוטוקול Http\Https הקליינטים של Web API יכולים להיות רבים : אפשר להשתמש גם בMVC

More information

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות

תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות תוכנה 1 תרגול 2: מערכים, מבני בקרה ושגיאות מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5

More information

תרגילים ופתרונות בשפת - C הסתעפויות

תרגילים ופתרונות בשפת - C הסתעפויות תרגילים ופתרונות בשפת - C הסתעפויות כתב וערך: שייקה בילו תרגיל - 1 כתוב תוכנית שתקבל מהמשתמש שלושה מספרים, ותציג את הגדול מביניהם על המסך. #include void main() int mis1, mis2, mis3, max; printf("please

More information

תוכנה 1 ומחלקות פנימיות

תוכנה 1 ומחלקות פנימיות תוכנה 1 Design Patterns ומחלקות פנימיות תרגול 11: 1 Design Patterns A general reusable solution to recurring design problems. Not a recipe A higher level language for design Factory, Singleton, Observer

More information

מבוא לתכנות ב- JAVA תרגול 5. Ipc161- practical session 5

מבוא לתכנות ב- JAVA תרגול 5. Ipc161- practical session 5 מבוא לתכנות ב- JAVA תרגול 5 Ipc161- practical session 5 מה בתרגול מערכים דו ממדיים )methods( פונקציות/שיטות ב- Java הגדרת פונקציה קריאה/הפעלה העברת ארגומנטים ערכי החזרה מערך דו ממדי מערך של מערכים חד ממדיים

More information

ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים. .vector. list iterator נכיר תחילה את האוסף הפשוט ביותר בספריה

ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים. .vector. list iterator נכיר תחילה את האוסף הפשוט ביותר בספריה ספרית התבניות הסטנדרטית (STL) כתיבת אלגוריתמים גנריים מצביעים חכמים vector list iterator 2 קיימת בכל מימוש של ++C מכילה אוספים (Containers) ואלגוריתמים נכיר תחילה את האוסף הפשוט ביותר בספריה.vector מערך

More information

תרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> }

תרגול 4 פונקציות. מבנה של פונקציה: public static <return value type> <function name> (<arg1 type> <arg1>, <arg2 type> <arg2>, ) { <function body> } נושאי התרגול: מה הן פונקציות הגדרת פונקציה,קריאה לפונקציה העברת ארגומנטים,החזרת ערך או void העברת משתנים פרימיטיביים ומערכים לפונקציה העמסה של פונקציות תרגול 4 פונקציות מוטיבציה לעיתים,אנו נזקקים לבצע

More information

הקלחמ ה תמרב ת ונ וכ ת (static members ) יליזרב דהוא Java תפשב ם דקת מ תונכת ביבא ל ת תטיסרבינוא

הקלחמ ה תמרב ת ונ וכ ת (static members ) יליזרב דהוא Java תפשב ם דקת מ תונכת ביבא ל ת תטיסרבינוא ת כו נו ת ברמת ה מחלקה (static members) אוהד ברזילי תכנות מ תקד ם בשפת Java אוניברסיטת ת ל אביב static keyword שדות המוגדרים כ static מציינים כי הם מוגדרים ברמת המחלקה ולא ברמת עצם כל העצמים של אותה מחלקה

More information

תוכנה 1 טיפוסי השפה טיפוסים לא פרימיטיביים הטיפוסים הפרימיטיביים מחרוזות המרה למספרים תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות

תוכנה 1 טיפוסי השפה טיפוסים לא פרימיטיביים הטיפוסים הפרימיטיביים מחרוזות המרה למספרים תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות טיפוסי השפה תוכנה 1 תרגול 2: טיפוסי שפה, מחרוזות, מערכים ושגיאות טיפוסים יסודיים (פרימיטיביים): 8 טיפוסים מוגדרים בשפה שמיועדים להכיל ערכים פשוטים: מספרים שלמים: byte, short, int, long מספרים ממשיים: float,

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 בחינה באופק! הבחינה תכלול את כל הנושאים שכיסינו במהלך הסמסטר: כל ההרצאות כל תרגולים כל תרגילי בית חומר סגור שאלות אמריקאיות 2 קצת על מנשקים מנשק יכול להרחיב שירותים במנשק הם תמיד

More information

$ gcc check.c. $ a.out. $ gcc check.c -o check. $ check. $ gcc -Wall check.c -o check. #include <stdio.h>

$ gcc check.c. $ a.out. $ gcc check.c -o check. $ check. $ gcc -Wall check.c -o check. #include <stdio.h> תכנות בסיסי בשפת C תוכנית ראשונה תוכנית ב - C מורכבת מאוסף פונקציות והגדרות טיפוסים. C איננה שפה object oriented כך שאין בה מושגים של מחלקה ואובייקט. נתחיל בתוכנית הראשונה המסורתית, זו המדפיסה הודעה יחידה

More information

מבוא לתכנות תוכנית שעור מס. 1 1 דר' דרור טובי, המרכז האוניברסיטאי אריאל בשומרון.

מבוא לתכנות תוכנית שעור מס. 1 1 דר' דרור טובי, המרכז האוניברסיטאי אריאל בשומרון. מבוא לתכנות תוכנית ראשונה שעור מס. 1 דרור טובי דר' 1 מבוא לתכנות בשפת ++C C \ שלום!! מרצה ד"ר דרור טובי, drorto@ariel.ac.il שעות קבלה: יום ב, 10-12 טלפון )אריאל( 03 9076547 אתר הקורס: http://www.ariel.ac.il/cs/pf/tdror/courses/cpp

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public abstract int foo1(int i); int foo2(int i); The modifiers

More information

Practical Session No. 14 Topological sort,amortized Analysis

Practical Session No. 14 Topological sort,amortized Analysis Practical Session No. 14 Topological sort,amortized Analysis Topological- Sort Topological sort Ordering of vertices in a directed acyclic graph (DAG) G=(V,E) such that if there is a path from v to u in

More information

פתרון מוצע לבחינת מה"ט ב_שפת c מועד אביב תשע"ח, פברואר 8102 מחבר: מר שייקה בילו, מכללת אורט רחובות

פתרון מוצע לבחינת מהט ב_שפת c מועד אביב תשעח, פברואר 8102 מחבר: מר שייקה בילו, מכללת אורט רחובות פתרון מוצע לבחינת מה"ט ב_שפת c מועד אביב תשע"ח, פברואר 8102 מחבר: מר שייקה בילו, מכללת אורט רחובות שאלה מספר 1 התוכנית מגדירה חמישה משתנים שלמים: השלושה הראשונים הם שלושה מצביעים - *s *t,i. j ושלושה נוספים

More information

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13 1 תוכנה 1 תרגול מספר 13 ו- HashCode Equals עוד על טיפוסים מוכללים )Advanced Generics( חריגים )Exceptions( בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 ו- HASHCODE EQUALS 3 תזכורת: המחלקה Object package

More information

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes בית הספר למדעי המחשב אוניברסיטת תל אביב

תוכנה 1. תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes בית הספר למדעי המחשב אוניברסיטת תל אביב תוכנה 1 תרגול מספר 11: Static vs. Dynamic Binding מחלקות מקוננות Nested Classes בית הספר למדעי המחשב אוניברסיטת תל אביב 1 2 STATIC VS. DYNAMIC BINDING 3 Static versus Dynamic Binding public class Account

More information

תוכנה 1 תרגול מספר 13

תוכנה 1 תרגול מספר 13 1 2 תוכנה 1 תרגול מספר 13 ו- HashCode Equals עוד על טיפוסים מוכללים )Advanced Generics( ו- HASHCODE EQUALS חריגים )Exceptions( בית הספר למדעי המחשב אוניברסיטת תל אביב 1 3 4 package java.lang; תזכורת: המחלקה

More information

מבוא לתכנות ב- JAVA תרגול 7

מבוא לתכנות ב- JAVA תרגול 7 מבוא לתכנות ב- JAVA תרגול 7 רקורסיה - הקדמה הגדרה רקורסיבית: חדר הוא מסודר אם צד שמאל שלו מסודר שלו מסודר. וצד ימין שיטת פתרון רקורסיבית: פתרון מופעים פשוטים יותר של בעיה בכדי לפתור את הבעיה המקורית רקורסיה

More information

תרגול 3 מערכים ופונקציות

תרגול 3 מערכים ופונקציות מבוא למדעי המחשב 2018 תרגול 3 מערכים ופונקציות מערכים מאפשרים עבודה עם מקבצים של נתונים פונקציות מאפשרות אבסטרקציה והאחדה של הקוד ראינו בהרצאה מערכים הצהרה, אתחול, גישה לאיברים במערך יצוג בזיכרון ובטבלת

More information

הנכות 1 םוכיס לוגרת 13 1

הנכות 1 םוכיס לוגרת 13 1 תוכנה 1 סיכום תרגול 13 1 בחינה באופק! הבחינה תכלול את כל הנושאים שכיסינו במהלך הסמסטר: כל ההרצאות כל תרגולים כל תרגילי בית חומר סגור שאלות אמריקאיות 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים

More information

מבוא לתכנות ב- JAVA מעבדה 4

מבוא לתכנות ב- JAVA מעבדה 4 מבוא לתכנות ב- JAVA מעבדה 4 מה בתרגול מערכים מחרוזות מערך חד מימדי מערך הוא מבנה המחזיק סדרה של איברים מאותו טיפוס גודל המערך הוא קבוע )נקבע בעת יצירת המערך( הגישה לכל איבר היא באמצעות אינדקס למה לי מערך?

More information

מבוא למדעי המחשב הרצאה 2: ראשונים בשפת C

מבוא למדעי המחשב הרצאה 2: ראשונים בשפת C מבוא למדעי המחשב צעדים הרצאה 2: ראשונים בשפת C מבוסס על שקפים שנערכו ע"י שי ארצי, גיתית רוקנשטיין ז"ל, איתן אביאור, סאהר אסמיר,מיכאל אלעד, רון קימל ודן רביב. עדכון אחרון: יחיאל קמחי, אוקטובר 2014 תוכנייה

More information

קורס תכנות רשימה מקושרת דוגמה: חיפוש מעבר על רשימה דוגמא: שחרור רשימה מקושרת דוגמא: הוספת אברים שלא בהתחלה

קורס תכנות רשימה מקושרת דוגמה: חיפוש מעבר על רשימה דוגמא: שחרור רשימה מקושרת דוגמא: הוספת אברים שלא בהתחלה רשימה מקושרת רשימה היא אוסף סדור של ערכים פעולות רשימה לעומת מערך קורס תכנות שיעור עשירי: מיונים, חיפושים, קצת ניתוח זמני ריצה, קצת תיקון טעויות ועוד על רשימות 3 5 7 9 typedef struct node int data; struct

More information

תרגול 12. Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים

תרגול 12. Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים תרגול 12 Standard Template Library כתיבת אלגוריתמים גנריים מצביעים חכמים ספרית התבניות הסטנדרטית קיימת בכל מימוש של ++C מכילה אוספים (Containers) ואלגוריתמים. משתמשת בתבניות :(templates) אוספי הנתונים

More information

תור שימושים בעולם התוכנה

תור שימושים בעולם התוכנה מבוא למדעי המחשב הרצאה : Queue, Iterator & Iterable תור מבנה נתונים אבסטרקטי תור שימושים בעולם התוכנה השימושים של תורים בעולם התוכנה מזכירים מאוד תורים במציאות: )VoIP( )YouTube( מקלדת שידור סרט באינטרנט

More information

ב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א'

ב ה צ ל ח ה! אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כה תשרי תשעח 15/10/17 שמות המורים: ציון סיקסיק מיועד לתלמידי : א' אוניברסיטת בן גוריון בנגב מספר נבחן : תאריך המבחן: כ"ה תשרי תשע"ח 15/10/17 שמות המורים: ציון סיקסיק א' ב- C תכנות מבחן ב: 202-1-9011 מס' הקורס : הנדסה מיועד לתלמידי : א' מועד קיץ סמ' שנה תשע"ז 3 שעות משך

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות המימוש שלהן. )חתימות( ללא קוד אשר

More information

Smart Pointers Nir Adar

Smart Pointers Nir Adar 7.1.2005 גירסה 1.00 Smart Pointers מסמך זה הורד מהאתר. אין להפיץ מסמך זה במדיה כלשהי, ללא אישור מפורש מאת המחבר. מחבר המסמך איננו אחראי לכל נזק, ישיר או עקיף, שיגרם עקב השימוש במידע המופיע במסמך, וכן לנכונות

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים - תזכורת מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות )חתימות(. מימוש דיפולטיבי

More information

שאלה 1 מהו הפלט של התוכנית הבאה:

שאלה 1 מהו הפלט של התוכנית הבאה: תרגול חזרה שאלה 1 מהו הפלט של התוכנית הבאה: public sttic int wht(int n) { int i; int sum=0; if(n == 0) return 1; for (i=0; i

More information

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Loop through Arrays. Array Creation and Initialization מערכים תוכנה 1 Array: A fixed-length data structure for storing multiple values of the same type Example from last week: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 תרגול 2: מערכים

More information

תוכנה 1. תרגול מס' 3 עבודה עם מחרוזות )Strings( מתודות )Methods( העברת פרמטרים

תוכנה 1. תרגול מס' 3 עבודה עם מחרוזות )Strings( מתודות )Methods( העברת פרמטרים תוכנה 1 תרגול מס' 3 עבודה עם מחרוזות )Strings( מתודות )Methods( העברת פרמטרים שלבי הפיתוח - חזרה קצרה ישנם שני שלבים נפרדים: שלב פיתוח התוכנית בשלב זה אנו משתמשים במהדר )קומפיילר( כדי להמיר קבצי.java )קבצי

More information

Amortized Analysis, Union-Find,

Amortized Analysis, Union-Find, Practical Session No. 13 Amortized Analysis, Union-Find, AMORTIZED ANALYSIS Refers to finding the average running time per operation, over a worst-case sequence of operations. Amortized analysis differs

More information

<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp)

<exp> ::= <define> <cexp> <define> ::= ( define <var-decl> <cexp> ) / DefExp(var:VarDecl, val:cexp) הנחיות כלליות: תאריך הבוחן: 10.5.2018 שם המרצה: מני אדלר,מיכאל אלחדד, ירון גונן מבחן בקורס: עקרונות שפות תכנות מס' קורס: 202-1-2051 מיועד לתלמידי: מדעי המחשב והנדסת תוכנה שנה: ב' סמסטר: ב' משך הבוחן: 2

More information

הפלט אחרי הביצוע של ההוראה :what3(root)

הפלט אחרי הביצוע של ההוראה :what3(root) שאלה )18 1 נקודות( סעיף א. )11 נקודות( הפלט אחרי הביצוע של ההוראה :what3(root) 15 10 20 26 12 18 25 3 28 14 13 סעיף ב. )3 נקודות( הפונקציה what1 מוסיפה את האיבר node בסוף הרשימה ומעדכנת את ראש הרשימה *ph

More information

Advanced Lab in Computer Communications Meeting 1 Layers Model, Codes, Ethernet. Instructor: Tom Mahler

Advanced Lab in Computer Communications Meeting 1 Layers Model, Codes, Ethernet. Instructor: Tom Mahler Advanced Lab in Computer Communications Meeting 1 Layers Model, Codes, Ethernet Instructor: Tom Mahler Course Objective הודעות כלליות מעבר על דף מידע OSI Model Classical 7 layers model IP model Application

More information

עקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter.

עקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter. עקרונות שפות תכנות 2016 תרגול 8 Type Inference System. Substitution Interpreter. Type Inference System The Type Inference System is a Scheme Implementation of the algorithm for Type Checking and Inference

More information

מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch

מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות פרק א. I x > a. פתרון 2: משפט switch 1 מדעי המחשב 2 יחידות לימוד פתרון בחינת הבגרות שאלה פרק א :1 m a b k k b x I x > a II x < b פלט I && II 0 8 12 8 4 1 9 11 2 10 11 9 8 2 12 35 13 העמודות המסומנות בכחול אינן עמודות חובה בפתרון. שאלה 2:

More information

רשימות דילוגים Skip Lists

רשימות דילוגים Skip Lists Lecture6 of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds רשימות דילוגים Skip Lists Skip lists: A probabilistic Alternative to Balanced Trees, William Pugh, Communications of the

More information

תוכנה 1. תרגול 1: סביבת העבודה ומבוא ל- Java

תוכנה 1. תרגול 1: סביבת העבודה ומבוא ל- Java תוכנה 1 תרגול 1: סביבת העבודה ומבוא ל- Java 1 מנהלות אתר הקורס: http://courses.cs.tau.ac.il/software1/1718b/ מתרגלים: ברית יונגמן )שעת קבלה: רביעי ב- 9:00 בתיאום מראש( שי גרשטיין )שעת קבלה: רביעי ב- 18:00,

More information

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays

תוכנה 1 מערכים. Array Creation and Initialization. Array Declaration. Array Creation and Initialization. Loop through Arrays מערכים Array: A fixed-length data structure for storing multiple values of the same type תוכנה 1 Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds: 1 3 5 7 9 11 13 15 odds.length

More information

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה

תוכנה 1 3 תרגול מס' מערכים ומבני בקרה תוכנה 1 3 תרגול מס' מערכים ומבני בקרה מערכים Array: A fixed-length data structure for storing multiple values of the same type Example: An array of odd numbers: Indices (start from 0) 0 1 2 3 4 5 6 7 odds:

More information

תוכנה 1 סמסטר א' תשע"א

תוכנה 1 סמסטר א' תשעא General Tips on Programming תוכנה 1 סמסטר א' תשע"א תרגול מס' 6 מנשקים, דיאגרמות וביטים * רובי בוים ומתי שמרת Write your code modularly top-down approach Compile + test functionality on the fly Start with

More information

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development(

מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development( מחרוזות ב Java ותכנות מונחה בדיקות )Test Driven Development( תוכנה 1 תרגול 8 String Immutability Strings are constants String s = " Tea "; s = s.trim(); s = s.replace('t', 'S'); s 1 2 3 " Tea " "Tea" "Sea"

More information

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf("bla\n"); 8. return 0; 9. }

מצליחה. 1. int fork-bomb() 2. { 3. fork(); 4. fork() && fork() fork(); 5. fork(); printf(bla\n); 8. return 0; 9. } שאלה : (4 נקודות) א. ב. ג. (5 נקודות) הגדירו את המונח race-condition במדוייק לא להשמיט פרטים. ספקו דוגמא. (5 נקודות) מהו? Monitor נא לספק הגדרה מלאה. ( נקודות) ( נקודות) ציינו כמה תהליכים יווצרו בקוד הבא

More information

היצביט ומ - ןוכית ת וי נבת

היצביט ומ - ןוכית ת וי נבת תבני ו ת תיכון Patterns) (Design תבנ יו ת תיכון - מו טיבציה בחיי היום יום אנחנו מתארים דברים תוך שימוש בתבניות חוזרות: "מכונית א' היא כמו מכונית ב', אבל יש לה 2 דלתות במקום 4" "אני רוצה ארון כמו זה, אבל

More information

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator

מבוא למדעי המחשב תרגול 8 רשימה משורשרת כללית, Comparator מבוא למדעי המחשב 2017 תרגול 8 רשימה משורשרת כללית, Comparator בתרגול היום. LinkedList בניית ההכללה מ- LinkIntList תרגול המבנה ושימושיו ממשקים: Comparator Sorted Linked List ל- LinkedList ע"י שימוש ב- Comparator

More information

דף הדרכה ליצירת שרת/ לקוח עם GUI

דף הדרכה ליצירת שרת/ לקוח עם GUI דף הדרכה ליצירת שרת/ לקוח עם GUI בשיעורים הקודמים למדנו כיצד ליצור שרת לקוח פשוט, ויצירת טופס המכיל פקדים כלומר יצירת GUI למשתמש, בשיעור זה נרצה להראות את הדרך לשילוב בין השניים כלומר ליצור לקוח client

More information

מבוא למדעי המחשב 2018 תרגול 7

מבוא למדעי המחשב 2018 תרגול 7 מבוא למדעי המחשב 2018 תרגול 7 רשימות משורשרות, רקורסיית זנב 1 ראינו בהרצאה רשימות משורשרות רקורסיית זנב 2 בתרגול היום רשימות משורשרות עוד שיטות מחלקה רקורסיית זנב היפוך מחרוזות, חיפוש בינארי 3 רשימות משורשרות

More information

תרגול 7 רשימות משורשרות, רקורסיית

תרגול 7 רשימות משורשרות, רקורסיית מבוא למדעי המחשב 2018 תרגול 7 רשימות משורשרות, רקורסיית זנב 1 ראינו בהרצאה רשימות משורשרות רקורסיית זנב 2 בתרגול היום רשימות משורשרות עוד שיטות מחלקה רקורסיית זנב היפוך מחרוזות, חיפוש בינארי 3 רשימות משורשרות

More information

הנכות 1 םוכיס לוגרת 14 1

הנכות 1 םוכיס לוגרת 14 1 תוכנה 1 סיכום תרגול 14 1 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public abstract int foo1(int i); int foo2(int i); The modifiers

More information

Computer Programming Summer 2017

Computer Programming Summer 2017 Computer Programming Summer 2017 תרגול 6 פונקציות 1 פונקציות פונקציות מאפשרות שימוש בקטעי קוד כקופסה שחורה ללא צורך לדעת את פרטי המימוש )מספיק לדעת מה עושה הפונקציה ולא איך(. למשל: הפונקציה strlen מהתירגול

More information

מבוא למדעי המחשב תרגול 12 מחסנית )Stack( memoization

מבוא למדעי המחשב תרגול 12 מחסנית )Stack( memoization מבוא למדעי המחשב 2017 תרגול 12 מחסנית )Stack( memoization בתרגול היום מחסנית בדיקת איזון סוגריים בביטוי אריתמטי משולש Pascal לא רקורסיבי memoization דוגמאות שימוש: בעיית העודף תזכורת: מחסנית :)stack( מבנה

More information

במידה ולסעיף ניתנה תשובה ובנוסף נרשם לגבי הסעיף לא יודע/ת אזי הניקוד שיינתן

במידה ולסעיף ניתנה תשובה ובנוסף נרשם לגבי הסעיף לא יודע/ת אזי הניקוד שיינתן פקולטה: מדעי הטבע מחלקה: מדעי המחשב שם הקורס: מבוא למחשבים ושפת C קוד הקורס: 2-7028510 תאריך בחינה: שאלות חזרה למבחן. חשוב: אין להסיק ששאלות אחרות לא יכולות להישאל במבחן, אין להסיק כי נושאים מסויימים בסיליבוס

More information

Chapter 11.2 Linked lists ( )

Chapter 11.2 Linked lists ( ) Lecture of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds מערכים, מטריצות דלילות, ורשימות מקושרות חומר קריאה לשיעור זה Chapter. Linked lists ( ) Geiger & Itai, מערך מוגדר ע"י הפעולות

More information

Nir Adar

Nir Adar שפת Java למתכנתי ++C - חלק שני מסמך זה הורד מהאתר. אין להפיץ מסמך זה במדיה כלשהי, ללא אישור מפורש מאת המחבר. מחבר המסמך איננו אחראי לכל נזק, ישיר או עקיף, שיגרם עקב השימוש במידע המופיע במסמך, וכן לנכונות

More information

פתרון מוצע לבחינה בשפת C של מה"ט מועד אביב תשע"ז, פברואר 2017 מחבר: מר עסאקלה שאדי, מכללת אורט בראודה

פתרון מוצע לבחינה בשפת C של מהט מועד אביב תשעז, פברואר 2017 מחבר: מר עסאקלה שאדי, מכללת אורט בראודה פתרון מוצע לבחינה בשפת C של מה"ט מועד אביב תשע"ז, פברואר 2017 מחבר: מר עסאקלה שאדי, מכללת אורט בראודה שאלה מספר 1 נתונה התכנית הבאה בשפת C: #include #define SUM_OF_3(x,y,z) x+y+z #define AVRG_OF_3(x,y,z)

More information

תרגול מס' 5: IO )קלט-פלט(

תרגול מס' 5: IO )קלט-פלט( תוכנה 1 אוניברסיטת תל אביב תרגול מס' 5: IO )קלט-פלט( זרמי קלט וזרמי פלט Streams(,(Input & Output קוראים וכותבים, והשימוש בהם לצורך עבודה עם קבצים 2 Input/Output in Java פעולות קלט-פלט הן רכיב מרכזי בכל

More information

Simple Web Service. namespace MyService { public class Service1 : System.Web.Services.WebService {

Simple Web Service. namespace MyService { public class Service1 : System.Web.Services.WebService { Simple Web Service WS פתיחת פרוייקט File New Project ASP.Net web service project - >http://localhost/webservice1 יצירת שירות המחשב חיבור וחילוק 2 מספרים : הטיפוסים הבסיסיים using System; איסוף וניהוף אוספי

More information

מבני נתונים תכנות מונחה עצמים מבני נתונים. מחלקות אבסטרקטיות חבילות packages סיכום הרשאות גישה wrappers ADT מערך דינמי מחסנית

מבני נתונים תכנות מונחה עצמים מבני נתונים. מחלקות אבסטרקטיות חבילות packages סיכום הרשאות גישה wrappers ADT מערך דינמי מחסנית מבני נתונים 1 תכנות מונחה עצמים מחלקות אבסטרקטיות חבילות packages סיכום הרשאות גישה wrappers מבני נתונים ADT מערך דינמי מחסנית 2 1 מבני נתונים תור - Queue Iterators רשימות מקושרות "רגילות" 3 מבנה נתונים

More information

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner Communication Networks (0368-3030) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University Allon Wagner Kurose & Ross, Chapter 3.5.5, 3.7 (5 th ed.) Many slides adapted from: J. Kurose

More information

הוראות לנבחן גמר לבתי ספר לטכנאים ולהנדסאים סמל השאלון: תכנות מערכות ושפת סף ההנחיות בשאלון זה מנוסחות בלשון זכר, אך מכוונות לנבחנות ולנבחנים כאחד.

הוראות לנבחן גמר לבתי ספר לטכנאים ולהנדסאים סמל השאלון: תכנות מערכות ושפת סף ההנחיות בשאלון זה מנוסחות בלשון זכר, אך מכוונות לנבחנות ולנבחנים כאחד. גמר לבתי ספר לטכנאים ולהנדסאים סוג הבחינה: מדינת ישראל אביב תשס"ז, 2007 מועד הבחינה: משרד החינוך 714001 סמל השאלון: תכנות מערכות ושפת סף הוראות לנבחן א. משך הבחינה: ארבע שעות. ב. מבנה השאלון ומפתח ההערכה:

More information

מבוא לתכנות ב- JAVA מעבדה 3. Ipc161-lab3

מבוא לתכנות ב- JAVA מעבדה 3. Ipc161-lab3 מבוא לתכנות ב- JAVA מעבדה 3 Ipc161-lab3 נושאי התרגול ניפוי שגיאות לולאות בדיקת תרגילים בקורס )השוואת פלטים למול הפתרון המצופה( כיצד להפנות את פלט התוכנית לקובץ טקסט איך להשוות תכנים של שני קבצים בעזרת

More information

תוכנה 1 * לא בהכרח בסדר הזה

תוכנה 1 * לא בהכרח בסדר הזה תוכנה 1 תרגול 7: מנשקים, פולימורפיזם ועוד * לא בהכרח בסדר הזה 2 מנשקים מנשקים מנשק )interface( הוא מבנה תחבירי ב- Java המאפשר לחסוך בקוד לקוח. מנשק מכיל כותרות של מתודות המימוש שלהן. )חתימות( ללא קוד אשר

More information